package com.wctj.api.business.common.service.impl;

import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.wctj.api.base.entity.DdwxMemberSubAccount;
import com.wctj.api.base.utils.InstanceConvertUtil;
import com.wctj.api.business.common.dao.DdwxMemberSubAccountMapper;
import com.wctj.api.business.common.dto.DdwxMemberSubAccountDTO;
import com.wctj.api.business.common.service.DdwxMemberSubAccountService;
import org.springframework.stereotype.Service;

@Service
public class DdwxMemberSubAccountServiceImpl extends ServiceImpl<DdwxMemberSubAccountMapper, DdwxMemberSubAccount> implements DdwxMemberSubAccountService {
    @Override
    public DdwxMemberSubAccountDTO queryBySubAccounts(String subAccounts, String systemPlatform) {
        DdwxMemberSubAccount ddwxMemberSubAccount = new LambdaQueryChainWrapper<>(baseMapper)
                .eq(DdwxMemberSubAccount::getSubAccount, subAccounts)
                .eq(DdwxMemberSubAccount::getSystemPlatform, systemPlatform)
                .one();
        return InstanceConvertUtil.convertObject(ddwxMemberSubAccount, DdwxMemberSubAccountDTO.class);
    }

    @Override
    public DdwxMemberSubAccountDTO findByMId(String id,String systemPlatform) {
        DdwxMemberSubAccount ddwxMemberSubAccount = new LambdaQueryChainWrapper<>(baseMapper)
                .eq(DdwxMemberSubAccount::getMid, id)
                .eq(DdwxMemberSubAccount::getSystemPlatform, systemPlatform)
                .one();
        return InstanceConvertUtil.convertObject(ddwxMemberSubAccount, DdwxMemberSubAccountDTO.class);
    }

    @Override
    public void addSubAccount(DdwxMemberSubAccountDTO subAccountDTO) {
        DdwxMemberSubAccount ddwxMemberSubAccount = InstanceConvertUtil.convertObject(subAccountDTO, DdwxMemberSubAccount.class);
        baseMapper.insert(ddwxMemberSubAccount);
    }

    @Override
    public int getCountByAccount(String val) {
        return Math.toIntExact(new LambdaQueryChainWrapper<>(baseMapper)
                .eq(DdwxMemberSubAccount::getSubAccount, val)
                .count());
    }
}
